<template>
    <div style="min-height: 400px">
        <BasicForm @register="registerForm"></BasicForm>
        <div style="width: 100%;text-align: center" v-if="!formDisabled">
            <a-button @click="submitForm" pre-icon="ant-design:check" type="primary">提 交</a-button>
        </div>
    </div>
</template>

<script lang="ts">
import { BasicForm, useForm } from '/@/components/Form/index';
import { computed, defineComponent } from 'vue';
import { defHttp } from '/@/utils/http/axios';
import { propTypes } from '/@/utils/propTypes';
import { getBpmFormSchema } from '../NurseGoods.data';
import { saveOrUpdateDict } from '../NurseGoods.api';

export default defineComponent({
    name: "NurseGoodsForm",
    components: {
        BasicForm
    },
    props: {
        formData: propTypes.object.def({}),
        formBpm: propTypes.bool.def(true),
    },
    setup(props) {

        //表单数据
        // const formSchema: any[] = [
        //     {
        //         label: '商品分类',
        //         field: 'typeName',
        //         component: 'Input',
        //     },
        //     {
        //         label: '护理类型',
        //         field: 'nurseType',
        //         component: 'JDictSelectTag',
        //         componentProps: {
        //             dictCode: "nurse_type"
        //         },
        //         dynamicRules: ({ model, schema }) => {
        //             return [
        //                 { required: true, message: '请输入护理类型!' },
        //             ];
        //         },
        //     },
        //     // {
        //     //   label: '价格',
        //     //   field: 'price',
        //     //   component: 'Input',
        //     //   dynamicRules: ({ model, schema }) => {
        //     //     return [
        //     //       { required: true, message: '请输入价格!' },
        //     //     ];
        //     //   },
        //     // },
        //     {
        //         label: '单位',
        //         field: 'unit',
        //         component: 'Input',
        //         dynamicRules: ({ model, schema }) => {
        //             return [
        //                 { required: true, message: '请输入单位!' },
        //             ];
        //         },
        //     },
        //     {
        //         label: '规格',
        //         field: 'specs',
        //         component: 'Input',
        //         dynamicRules: ({ model, schema }) => {
        //             return [
        //                 { required: true, message: '请输入规格!' },
        //             ];
        //         },
        //     },
        //     {
        //         label: '分类图片',
        //         field: 'pic',
        //         component: 'JImageUpload',
        //         componentProps: {
        //             fileMax: 5
        //         },
        //         dynamicRules: ({ model, schema }) => {
        //             return [
        //                 { required: true, message: '请输入分类图片!' },
        //             ];
        //         },
        //     },
        //     {
        //         label: '商品详情',
        //         field: 'details',
        //         component: 'InputTextArea',
        //         dynamicRules: ({ model, schema }) => {
        //             return [
        //                 { required: true, message: '请输入商品详情!' },
        //             ];
        //         },
        //     },
        //     {
        //         label: '父级节点',
        //         field: 'pid',
        //         component: 'JTreeSelect',
        //         componentProps: {
        //             // dict: "nurse_goods,type_name,id",
        //             url: "/nurse_goods/nurseGoods/loadTreeRoot?async=true&pcode=&hospital=4028838b9010e8b4019010e904ea0002",
        //             pidField: "pid",
        //             pidValue: "0",
        //             hasChildField: "has_child",
        //             // params: { hospitalId: '0' }
        //         },
        //     },
        //     {
        //         label: '排序',
        //         field: 'sorts',
        //         component: 'InputNumber',
        //     },
        //     {
        //         label: '状态',
        //         field: 'status',
        //         component: 'JDictSelectTag',
        //         defaultValue: "1",
        //         componentProps: {
        //             dictCode: "valid_status"
        //         },
        //     },
        //     // hospital 主键隐藏字段，目前写死为ID
        //     {
        //         label: '护理医院',
        //         field: 'hospital',
        //         component: 'Input',
        //         show: false
        //     },
        //     // TODO 主键隐藏字段，目前写死为ID
        //     {
        //         label: '',
        //         field: 'id',
        //         component: 'Input',
        //         show: false
        //     },
        // ];


        const [registerForm, { setFieldsValue, setProps, getFieldsValue }] = useForm({
            labelWidth: 150,
            schemas: formSchema,
            showActionButtonGroup: false,
            baseColProps: { span: 24 },
        });

        const formDisabled = computed(() => {
            if (props.formData.disabled === false) {
                return false;
            }
            return true;
        });

        let formData = {};
        const queryByIdUrl = '/nurse_goods/nurseGoods/queryById';
        async function initFormData() {
            let params = { id: props.formData.dataId };
            const data = await defHttp.get({ url: queryByIdUrl, params });
            formData = { ...data }
            //设置表单的值
            await setFieldsValue(formData);
            //默认是禁用
            await setProps({ disabled: formDisabled.value })
        }

        async function submitForm() {
            let data = getFieldsValue();
            let params = Object.assign({}, formData, data);
            console.log('表单数据', params)
            await saveOrUpdateDict(params, true)
        }

        initFormData();

        return {
            registerForm,
            formDisabled,
            submitForm,
        }
    }
});
</script>